“CleanArchitecture 30장”
데이터베이스는
- 모델 아님
- 소프트웨어
- 데이터에 접근할 방법을 제공하는 유틸리티
- 저수준 세부사항
- 아키텍처와 관련 없음
뛰어난 아키텍처라면 저수준의 메커니즘이 시스템 아키텍처를 오염시키는 일을 용납하지 않는다.
관계형 데이터베이스
- 관계형 데이터베이스는 결국 기술일 뿐이다. 즉 세부사항임을 뜻함
- 데이터를 테이블에 행 단위로 배치한다는 자체는 아키텍처 관점으로 전혀 중요하지 않음
- 애플리케이션의 유스케이스는 이런 방식을 알아선 안됨 (데이터가 테이블 구조를 가진다는 사실)
- 아키텍처의 외부 원에 위치한 최하위 수준의 유틸리티 함수만 알아야 함
데이터베이스 시스템은 왜 이렇게 널리 사용되는가?
- 디스크 -> 데이터 접근 및 관리 시스템이 필요해짐 -> 두가지 유형으로 분리
- 파일 시스템 : 문서기반. 파일 구조로 만들어 디렉터리를 통해 접근
- 데이터베이스 시스템 : 내용 기반. 테이블 구조로 만들어 SQL을 통해 접근
- 두 시스템은 데이터를 디스크에 체계화 하여, 각 시스템에 특화된 방식으로 접근해야 할 때 효율적으로 저장, 검색 할수 있도록 함
- 관련 데이터를 RAM 으로 가져옴
디스크가 없다면 어떻게 될까?
만약 모든 데이터가 RAM 에 저장된다면 데이터를 어떻게 체계화할 것인가?
- 데이터들을 연결 리스트, 트리, 해시 테이블, 스택, 큐 혹은 무수히 많은 데이터 구조로 체계화
- 데이터 접근할 때는 포인터나 참조 사용
- 데이터가 데이터 베이스나 파일 시스템에 있더라도 RAM으로 읽은 후 임의의 구조로 변경
- 데이터를 파일이나 테이블 형태로 그대로 두는 경우는 거의 없음
세부사항
데이터베이스는
- 메커니즘
- 비트를 닮은 거대한 그릇
- 데이터를 장기적으로 저장하는 공간
하지만 성능은?
데이터 저장소에 데이터를 빠르게 넣고 뺄 수 있는 건 저수준의 관심사이다. 성능은 시스템 전반적 아키텍처와는 아무 관련이 없다.
결론
- 체계화된 데이터 구조와 데이터 모델은 아키텍처 적으로 중요
- 데이터베이스는 아키텍처적으로 중요하지 않음
데이터는 중요하다. 데이터베이스는 세부사항이다.